import {
  DATE_FORMAT,
  DEFAULT_PLACEHOLDER
} from '@/utils/constants'
import moment, { Moment } from 'moment'

// 时间字符串 或者 Unix 时间戳（毫秒数）
export function formatDateTime(time: string | number, format = DATE_FORMAT) {
  return time ? moment(time).format(format) : DEFAULT_PLACEHOLDER
}

// Unix 时间戳 (秒)
export function formatUnixTime(time: number, format = DATE_FORMAT): string {
  return time ? moment.unix(time).format(format) : DEFAULT_PLACEHOLDER
}

/**
 * @Date: 2023-09-12 10:43:27
 * @Author: 小朱
 * @function: 换算时间，
 * @Param: 第一个参数是里程，第二个参数是速度
 * @return 得出一个时间，超过60秒，换成分钟加秒，超过60分钟换成，小时加分钟加秒，超过24小时换成天，以此类推
 */
export const convertTime = (duration: number) => {
  if (typeof duration !== 'number') throw new Error('convertTime：参数不对')
  let formattedTime // 格式化后的时间
  if (duration >= 60) {
    const minutes = Math.floor(duration / 60) // 计算分钟数
    const seconds = Math.round(duration % 60) // 计算剩余的秒数
    if (minutes >= 60) {
      const hours = Math.floor(minutes / 60) // 计算小时数
      const remainingMinutes = Math.round(minutes % 60) // 计算剩余的分钟数

      if (hours >= 24) {
        const days = Math.floor(hours / 24) // 计算天数
        const remainingHours = Math.round(hours % 24) // 计算剩余的小时数
        formattedTime = `${days}天${remainingHours}小时${remainingMinutes}分`
      } else {
        formattedTime = `${hours}小时${remainingMinutes}分`
      }
    } else {
      formattedTime = `${minutes}分${seconds}秒`
    }
  } else {
    formattedTime = `${duration.toFixed(2)}秒`
  }
  return formattedTime
}
